#include<cstdio>
#include<algorithm>
template<class T>void read(T &x)
{
	x=0;int f=0;char ch=getchar();
	while(ch<'0'||ch>'9') { f|=(ch=='-'); ch=getchar(); }
	while(ch<='9'&&ch>='0') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); }
	x = f ? -x : x;
	return ;
}

struct node{
	int w,l;
	friend bool operator<(const node a, const node b)
	{
		if(a.l == b.l)
			return a.w > b.w;
		else
			return a.l > b.l;
	}
};

int F[5010];//LIS;
node line[5010];
int n, ans;

int main()
{
	read(n);
	for (int i = 1; i <= n; i++) 
	{
		read(line[i].l);read(line[i].w);
	}

	std::sort(line+1, line+1+n);

	for (int i = 1; i <= n; i++) 
	{
		for (int j = 0; j <= i-1; j++) 
			if(line[i].w > line[j].w)
				F[i] = std::max(F[i], F[j] + 1);
	}

	for (int i = 1; i <= n; i++) 
		ans = std::max(F[i], ans);

	printf("%d", ans);

	return 0;
}
